<?php

class Cliente_afuera extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('distrito_model', '', true);
        $this->load->model('provincia_model', '', true);
        $this->load->model('usuario_perfil_model', '', true);
        $this->load->model('usuario_model', '', true);
        $this->load->model('persona_juridica_model', '', true);
        $this->load->model('persona_model', '', true);
        $this->load->model('solusuario_model', '', true);
        $this->load->model('persona_natural_model', '', true);
        $this->load->model('maestra_model', '', true);
        $this->load->model('perfil_model', '', true);
        $this->load->model('ubigeo_model', '', true);
        $this->load->model('departamento_model', '', true);
        $this->load->model('tipo_documento_model', '', true);
        $this->load->library('form_validation');
        $this->load->helper('form');
        $this->load->helper('util');
    }
    
    /**
     * metodo para poder ver el formulario de terminos y condiciones
     * @author Leidy Uribe Marcos
     */
    function terminos_condiciones(){
    	$data['page_title'] = 'Terminos y Condiciones de Uso y Privacidad';
    	$data['mensaje'] = 'Sírvase leer atentamente el siguiente documento';
    	$this->load->view('terminos_condiciones/terminos_condiciones', $data);
    }

    /**
     * metodo que permite a un cliente loguearse diferente a administrador
     * @author Leidy Uribe Marcos
     */
    function registrate() {
        $data ['page_title'] = "Registrar Cliente";
        $data ['mensaje'] = "Ingresa un cliente nuevo";
        $departamento = $this->departamento_model->getDepartamento();
        $provincia = $this->provincia_model->getProvincia();
        $distrito = $this->distrito_model->getDistrito();
        $tipo_documento = $this->tipo_documento_model->getListTipoDocumento();
        $data ['departamento'] = $departamento;
        $data ['provincia'] = $provincia;
        $data ['distrito'] = $distrito;
        $data['tipo_documento'] = $tipo_documento;
        $this->load->view('cliente_view/cliente_registro', $data);
    }
    
    function insertar_afuera() {
    	$this->form_validation->set_rules('txtNumdoc', 'Numero de Documento', 'trim|is_unique[solicitud_usuario.nro_documento]', 'trim|is_unique[persona_natural.nro_documento]');
    	$this->form_validation->set_rules('txtRuc', 'Numero de RUC', 'trim|is_unique[solicitud_usuario.ruc]', 'trim|is_unique[persona_juridica.ruc]');
    	$this->form_validation->set_rules('txtUsuario', 'Nombre del usuario', 'trim|is_unique[solicitud_usuario.username]');
    	$this->form_validation->set_rules('txtCorreo', 'Ej: example@example.com', 'trim|is_unique[solicitud_usuario.correo]');
    	$this->form_validation->set_message('is_unique', 'EL usuario ya se encuentra registrado');
    
    	if ($this->form_validation->run() == FALSE) {
    		// validacion incorrecta
    		$data ['page_title'] = "Registrar Cliente";
    		$data ['mensaje'] = "Ingresa un cliente nuevo";
    		$departamento = $this->departamento_model->getDepartamento();
    		$tipo_documento = $this->tipo_documento_model->getListTipoDocumento();
    		$data ['departamento'] = $departamento;
    		$data['tipo_documento'] = $tipo_documento;
    		$data ['mensaje'] = 'El usuario ya se encuentra registrado';
    		$data ['class'] = "alert_error";
    		$data['estado_usuario'] = '';
    		$data['id_estado_usuario'] = '';
    		$data['id_tipo_cliente'] = '';
    		$session_data = $this->session->userdata('logged_in');
    
    		if ($session_data ['tipo_usuario'] == 1) {
    			$this->load->view('cliente_view/cliente_new', $data);
    			// se coloca elseif porque tipo_usuario jala 3 posibilidades 1 admin, 2 cliente y 3 prov
    		} else { // verificar ya que en la tabla perfil estan 3, 1 - administrador, 2 - cliente y 3 - proveedor
    			$this->load->view('cliente_view/cliente_registro', $data);
    		}
    	} else {
    		/*
    		 * 03/ 06/2015
    		 * llamo a ubigeo para insertarlo en persona enviando el id de
    		 * departamento, provincia y distrito
    		 */
    		$data ['departamento'] = $_POST ['cbxDepartamento'];
    		$data ['provincia'] = $_POST ['cbxProvincia'];
    		$data ['distrito'] = $_POST ['cbxDistrito'];
    		/*
    		 * 03/06/2015
    		 * llamo a la funcion getubigeo y para esto creo el modelo ubigeo_model
    		*/
    		$ubigeo = $this->ubigeo_model->getUbigeo($data);
    		$data ['ubigeo'] = $ubigeo ['id_ubigeo'];
    
    		// Cogiendo id del usuario logeado
    		$session_data = $this->session->userdata('logged_in');
    		$id = $session_data ['id'];
    
    		// Datos para el usuario y cliente
    		if ($session_data ['tipo_usuario'] == 1) {
    			$data ['usuario_registro'] = $id; // id del usuario logeado
    		} else {
    			$data ['usuario_registro'] = 0;
    		}
    		$data ['fecha_registro'] = date('Y-m-d H:i:s');
    
    		// Datos para el usuario
    		$data ['usuario'] = $_POST ['txtUsuario'];
    		$data ['password'] = $_POST ['txtPassword'];
    
    		// Datos para el cliente
    		$data ['direccion'] = $_POST ['txtDireccion'];
    		$data ['correo'] = $_POST ['txtCorreo'];
    		$data ['telefono'] = $_POST ['txtTelefono'];
    		$data ['estado_solicitud'] = 1;
    
    		// OBTENIENDO EL ESTADO ACTIVO DE LA TABLA MAESTRA QUE POR DEFECTO SERA ACTIVO
    		$idEstado = $this->maestra_model->getEstado();
    		$data ['idEstado'] = $idEstado ['id_tabla_maestra'];
    
    		// OBTENIENDO EL PERFIL
    		$idPerfil = $this->perfil_model->getPerfilCliente();
    		$data ['idPerfil'] = $idPerfil ['id_perfil'];
    
    		// Insertando en persona natural o juridica
    		if ($_POST ['radio-set'] == '1') {
    			$data ['nombres'] = $_POST ['txtNombres'];
    			$data ['apellidos'] = $_POST ['txtApellidos'];
    			$data ['documento'] = $_POST ['cbxDocumento'];
    			$data ['numdoc'] = $_POST ['txtNumdoc'];
    			$data ['nacimiento'] = formatoFecha($_POST['dNacimiento']);
    			$data ['tipo_cliente'] = INT_CLIENTE_INDIVIDUAL;
    
    			$this->db->trans_begin();
    
    			// INSERTANDO EN SOLICITUD_USUARIO
    			$this->solusuario_model->insert_persona_natural($data);
    
    			// INSERTANDO EN PERSONA
    			$this->persona_model->insert($data);
    
    			// Cogiendo el id de la persona recientemente registrada
    			$idPersona = $this->persona_model->getId();
    			$data ['idPersona'] = $idPersona ['id_persona'];
    
    			// INSERTANDO EN PERSONA NATURAL
    			$this->persona_natural_model->insert($data);
    
    			// OBTIENE EL ID DE LA SOLICITUD_USUARIO RECIEN REGISTRADO
    			$idSolUsuario = $this->solusuario_model->getId();
    			$data ['idSolUsuario'] = $idSolUsuario ['id_solicitud_usuario'];
    
    			$this->usuario_model->insert ( $data );
    
    			/** obteniendo los datos del ultimo usuario registrado incluyendo el nombre del estado de
    			 * la tabla maestra
    			 * @author Leidy Uribe Marcos
    			*/
    			$idUsuario = $this->usuario_model->getIdUsuario();
    			$data['estado_usuario'] = $idUsuario['estado'];
    
    			if ($this->db->trans_status() === FALSE) {
    				$this->db->trans_rollback();
    			} else {
    				$this->db->trans_commit();
    			}
    
    		} else {
    			$data ['ruc'] = $_POST ['txtRuc'];
    			$data ['razon'] = $_POST ['txtRazon'];
    			$data ['tipo_cliente'] = INT_CLIENTE_CORPORATIVO;
    
    			$this->db->trans_begin();
    
    			// INSERTANDO EN SOLICITUD_USUARIO
    			$this->solusuario_model->insert_persona_juridica($data);
    
    			// OBTIENE EL ID DE LA SOLICITUD_USUARIO RECIEN REGISTRADO
    			$idSolUsuario = $this->solusuario_model->getId();
    			$data ['idSolUsuario'] = $idSolUsuario ['id_solicitud_usuario'];
    
    			// INSERTANDO EN PERSONA
    			$this->persona_model->insert($data);
    
    			// Cogiendo el id de la persona recientemente registrada
    			$idPersona = $this->persona_model->getId();
    			$data ['idPersona'] = $idPersona ['id_persona'];
    
    			$this->persona_juridica_model->insert($data);
    
    			// Insertando en usuario
    			$this->usuario_model->insert($data);
    
    			/** obteniendo los datos del ultimo usuario registrado incluyendo el nombre del estado de
    			 * la tabla maestra
    			 * @author Leidy Uribe Marcos
    			*/
    			$idUsuario = $this->usuario_model->getIdUsuario();
    			$data['estado_usuario'] = $idUsuario['estado'];
    
    			if ($this->db->trans_status() === FALSE) {
    				$this->db->trans_rollback();
    			} else {
    				$this->db->trans_commit();
    			}
    		}
    
    		$this->db->trans_begin();
    
    		// Cogiendo el id del usuario recientemente registrado
    		$idUsuario = $this->usuario_model->getId();
    		$data ['idUsuario'] = $idUsuario ['id_usuario'];
    
    		// Insertando en usuario_perfil
    		$this->usuario_perfil_model->insert($data);
    
    		if ($this->db->trans_status() === FALSE) {
    			$this->db->trans_rollback();
    		} else {
    			$this->db->trans_commit();
    		}
    		echo"<script type=\"text/javascript\">alert('SE REGISTRO EN EL SISTEMA');
    				window.location.href='".base_url()."index.php/principal';
    			 </script>";
    	}
    }

    function cargarDocumento() {
        if ($_GET ['cbxDocumento'] == '') {
            $this->load->view('cliente_view/doc');
        } else if ($_GET ['cbxDocumento'] == INT_DNI) {
            $this->load->view('cliente_view/doc_dni');
        } else {
            $this->load->view('cliente_view/doc_ext');
        }
    }

    function cargarProvincia() {
        $data ['id'] = $_GET ['cbxDepartamento'];
        $provincia = $this->provincia_model->getPorDepartamento($data);
        $data ['provincia'] = $provincia;
        $this->load->view('combos_view/cargar_provincia', $data);
    }

    function cargarProvinciaCliente() {
        $data ['id'] = $_GET ['cbxDepartamento'];
        $provincia = $this->provincia_model->getPorDepartamento($data);
        $data ['provincia'] = $provincia;
        $this->load->view('combos_view/cargar_provincia_cliente', $data);
    }

    function cargarDistritoCliente() {
        /*
         * 02/06/2015
         * se cambio el metodo de llamar a los id de provincia y departamento por medio de get
         * se pasa ambas variables a la funcion getPorProvincia($data, $data1)
         */
        $data ['id'] = $_GET ['prov'];
        $data1 ['cod'] = $_GET ['dept'];
        $distrito = $this->distrito_model->getPorProvincia($data, $data1);
        $data ['distrito'] = $distrito;
        $this->load->view('combos_view/cargar_distrito', $data);
    }

    function cargarDistrito() {
        /*
         * 02/06/2015
         * se cambio el metodo de llamar a los id de provincia y departamento por medio de get
         * se pasa ambas variables a la funcion getPorProvincia($data, $data1)
         */
        $data ['id'] = $_GET ['prov'];
        $data1 ['cod'] = $_GET ['dept'];
        $distrito = $this->distrito_model->getPorProvincia($data, $data1);
        $data ['distrito'] = $distrito;
        $this->load->view('combos_view/cargar_distrito', $data);
    }

}

?>